//1.引入模块
var categoriesModel = require("../models/categoriesModel.js")
var querystring = require("querystring")
var urlModel = require("url")

// 2. 向外暴露封装的业务方法
module.exports = {
    showCategoriesPage(req,res){ // 展示分类目录页面
        //开启session验证
        // if (!req.session.isLogin) { // 如果无session
        //     res.redirect("/login") // 跳转到登录页面
        //     return
        // }

        // 获取数据,渲染分类目录页面
        res.render("categories", { isLogin: req.session.isLogin})
    },
    getAllCategoriesInfo(req,res){ // 获取分类目录后端数据
        categoriesModel.getAllCategoriesInfo((err,data)=>{
            if(err) return res.json({ // json()方法会把对象转为字符串形式传输
                "code":1,
                "msg": "获取数据失败"
            })
            res.json({
                "code":0,
                "msg": "获取数据成功",
                "data": data
            })
        })
    },
    addCategoriesInfo(req,res){ // 获取添加分类的后端数据
        //获取添加用户的请求数据
        var categories = req.body; // 通过中间件body-parser,使用req.body方法可获取post方式传输的数据值.以键值对
        // console.log(categories);
        categoriesModel.addCategoriesInfo(categories,(err,isOK)=>{
            if(err) return res.json({
                "code": 1,
                "msg": "添加失败"
            })
            // 如果添加数据成功,则需要重新读取后端数据返回前端渲染页面数据
            categoriesModel.getAllCategoriesInfo((err,data)=>{
                if(err) return res.json({
                    "code": 1,
                    "msg": "添加数据成功,获取数据失败"
                })
                res.json({
                    "code": 0,
                    "msg": "添加数据成功,获取数据成功",
                    "data": data // 把获取的数据返回前端渲染页面
                })
            })
        })
    },
    delCategoriesInfo(req, res) { // 获取删除分类的后端数据
       //获取get方式提交的数据
       var url = querystring.parse(req.url,"?","=",true) // 把get方式传递的数据解析为对象形式
       // 调用数据层删除数据的方法
        categoriesModel.delCategoriesInfo(url.id,(err,isOK)=>{ 
            if(err) return res.json({
                "code": 1,
                "msg": "删除数据失败"
            })
            if(isOK){ // 如果删除数据成功
                //重新获取数据库数据返回渲染页面
                categoriesModel.getAllCategoriesInfo((err,data)=>{
                    if(err) return res.json({
                        "code": 1,
                        "msg": "删除数据成功,获取数据失败"
                    })
                    res.json({
                        "code": 0,
                        "msg": "删除数据成功,获取数据成功",
                        "data": data
                    })
                })
            }
        })
    },
    getCategoriesInfoById(req,res){
        //接收get方式传输的数据
        var query = urlModel.parse(req.url,true).query
        //调用数据层根据id的查找对应数据
        categoriesModel.getCategoriesInfoById(query.id,(err,data)=>{
            if(err) return res.json({
                "code": 1,
                "msg": "查询失败"
            })
            res.json({
                "code":0,
                "msg": "查询成功",
                "data": data
            })
        })
    },
    updateCategoriesInfoById(req,res){
        // 获取post传输的数据
        var categoriesInfo = req.body
        // console.log(categoriesInfo)
        //调用数据层的方法更新数据
        categoriesModel.updateCategoriesInfoById(categoriesInfo,(err,isOK)=>{
            if(err) return res.json({
                "code":1,
                "msg":"更新失败"
            })
            //如果更新数据成功,需要重新获取后端数据渲染页面
            if(isOK){
                categoriesModel.getAllCategoriesInfo((err,data)=>{
                    if(err) return res.json({
                        "code":1,
                        "msg":"更新成功,获取数据失败"
                    })
                    res.json({
                        "code":0,
                        "msg":"更新成功,获取数据成功",
                        "data":data // 返回读取后端的数据
                    })
                })
            }
        })
    },
    delMoreCategoriesInfoByIds(req,res){
        //获取post传输的数据
        // console.log(req.body)
        var ids = req.body["ids[]"];
        //调用数据层批量删除分类信息的方法
        categoriesModel.delMoreCategoriesInfoByIds(ids,(err,isOK)=>{
            if(err) return res.json({
                "code":1,
                "msg": "批量删除失败"
            })
            if(isOK){
                //批量删除成功,重新读取后端的数据返回前端渲染页面
                categoriesModel.getAllCategoriesInfo((err,data)=>{
                    if(err) return res.json({
                        "code":1,
                        "msg": "批量删除成功,获取数据失败"
                    })
                    res.json({
                        "code":0,
                        "msg": "批量删除成功,获取数据成功",
                        "data":data
                    })
                })
            }
        })
    }
}